package com.hspedu.socket;

import java.io.IOException;
import java.io.InputStream;
import java.lang.invoke.SerializedLambda;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author DL5O
 * @version 1.0
 * 服务端
 */
public class SocketTCP01Server {
    public static void main(String[] args) throws IOException {
    /*思路：
    1.在本机的999端口，等待连接，当没有客户端连接999端口时会阻塞在这里，等待连接
    2.通过socket.getInputStream()读取客户端写入到通道中的数据然后显示即可
    */

        ServerSocket serverSocket = new ServerSocket(9999);//在本机的9999端口监听
        System.out.println("服务端在9999端口监听，等待连接...");
        Socket socket = serverSocket.accept();
        //1.阻塞，等待客户端连接，如果有客户端连接则会返回一个socket对象，程序继续往下执行
        //2.serverSocket 可以通过accept()，返回多个Socket[多个客户端连接服务器的并发]

        System.out.println("服务端 Socket=" + socket.getClass());

        //3.通过socket.getInputStream读取客户端写入到到数据通道中的数据
        InputStream inputStream = socket.getInputStream();
        byte[] buf = new byte[50];
        int len = 0;
        while((len= inputStream.read(buf))!= -1){
            System.out.println(new String(buf,0,len,"utf-8"));
        }
        System.out.println("输出成功");
        inputStream.close();
        socket.close();
    }
}
